﻿Public Class Admin
    Dim dsMerkezler As DataTable 'sorgunun sonucu tutuyor  
    Dim dsSubeler As DataTable
    Dim dtAraclar As DataTable

    Private Sub btnAnaMerkezEkle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnaMerkezEkle.Click

        For Each control As FlowLayoutPanel In flpMerkezler.Controls
            Dim textbox = control.Controls(1)
            Dim id = textbox.Name.Substring(1)
            Dim deger = textbox.Text
            If Not IsNumeric(textbox.Text) Then
                MsgBox("Ana Merkez Alanlarına Olan Uzaklığı Girmelisiniz!", MsgBoxStyle.Exclamation)
                Return
            End If


        Next

        If tbAnaMerkezAdi.Text.Length < 3 Then
            MsgBox("Ana merkez adı 3 karakterden kısa olamaz", MsgBoxStyle.Exclamation)
            Return
        End If

        Sorgula("insert into merkezlersubeler (Adi, ustMerkez, kademe, merkezmi) values ('" & temizle(tbAnaMerkezAdi.Text) & "',0,0, 'true')")


        Dim sonEklenenMerkezGetir = Sorgula("select max(ID) as sonid from merkezlersubeler")
        Dim sonEklenenMerkezID = sonEklenenMerkezGetir.Rows(0)("sonid")

        Dim mesafeleriEkleSQL = "insert into merkezbolgemesafeler values "
        For Each control As FlowLayoutPanel In flpMerkezler.Controls
            Dim textbox = control.Controls(1)
            Dim id = TextBox.Name.Substring(1)
            Dim deger = textbox.Text
            
            mesafeleriEkleSQL &= "(" & sonEklenenMerkezID & ", " & id & ", " & deger & "), "
        Next

        mesafeleriEkleSQL = mesafeleriEkleSQL.Substring(0, mesafeleriEkleSQL.Length - 2)
        Sorgula(mesafeleriEkleSQL)

        TreeViewGuncelleMerkezler(tvMerkezler)
        TreeViewGuncelleSubeler(tvSubeler)

        MsgBox(" Ana Merkez Başarı ile eklendi.", MsgBoxStyle.Information)

        tbAltMerkezAdi.Text = ""
        tbAnaMerkezAdi.Text = ""
    End Sub

    Private Sub btnEkle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim secilenID As Integer
        Try
            secilenID = tvMerkezler.SelectedNode.Name
        Catch ex As Exception
            MsgBox("Üst Merkez Seçmediniz", MsgBoxStyle.Exclamation, "Hata")
            Return
        End Try

        If Not IsNumeric(tbAltMerkezMesafe.Text) Then
            MsgBox("Üst merkezle aranızdaki mesafeyi belirten bir değer girmelisiniz.", MsgBoxStyle.Exclamation)
            Return
        End If

        If tbAltMerkezAdi.Text.Length < 1 Then
            MsgBox("Merkez adı boş olamaz", MsgBoxStyle.Exclamation, "Hata")
            Return
        End If
        If tbAltMerkezKullaniciAdi.Text.Length < 1 Then
            MsgBox("Kullanıcı adı boş olamaz", MsgBoxStyle.Exclamation, "Hata")
            Return
        End If
        If tbAltMerkezSifre.Text.Length < 1 Then
            MsgBox("Şifre boş olamaz", MsgBoxStyle.Exclamation, "Hata")
            Return
        End If


        Dim secilenKademe = dsMerkezler.Rows.Find(tvMerkezler.SelectedNode.Name)("kademe")
        Debug.Print("secilenID:  " & secilenID & " secilenKademe: " & secilenKademe)

        Sorgula("insert into merkezlersubeler (Adi, ustMerkez, kademe, ustMerkezMesafe,merkezmi,kullaniciadi,sifre) values ('" &
                temizle(tbAltMerkezAdi.Text) &
                "'," &
                secilenID &
                "," &
                secilenKademe + 1 &
                ", " & tbAltMerkezMesafe.Text & ", 'true','" &
                temizle(tbAltMerkezKullaniciAdi.Text) & "','" &
                temizle(tbAltMerkezSifre.Text) & "')")
        MsgBox("ekledim galiba", MsgBoxStyle.Information, "Hata")

        TreeViewGuncelleMerkezler(tvMerkezler)
        TreeViewGuncelleSubeler(tvSubeler)

        Dim node As TreeNode = tvMerkezler.Nodes.Find(secilenID, True).First()
        tvMerkezler.SelectedNode = node
        tvMerkezler.SelectedNode.Expand()

        tbAltMerkezAdi.Text = ""
        tbAnaMerkezAdi.Text = ""
        tvMerkezler.SelectedNode = Nothing
    End Sub

    Private Sub Merkezler_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TreeViewGuncelleMerkezler(tvMerkezler)
        TreeViewGuncelleSubeler(tvSubeler)

      
        '  Me.ReportViewer1.RefreshReport()
    End Sub

    Private Sub TreeViewGuncelleMerkezler(ByRef tv As TreeView)
        dsMerkezler = Sorgula("select * from merkezlersubeler where merkezmi = 'true' order by kademe, ID")
        dsMerkezler.PrimaryKey = {dsMerkezler.Columns("ID")}
        tv.Nodes.Clear()
        tv.ImageList = imagelist1

        For Each dr In dsMerkezler.Rows
            'Debug.Print(dr("kademe") & " - " & dr("Adi") & " - " & dr("ID"))
            If dr("kademe") = 0 Then
                tv.Nodes.Add(dr("ID"), dr("Adi"), 0, 0)
            Else
                Dim ust = tv.Nodes.Find(dr("ustMerkez"), True)
                ust.First.Nodes.Add(dr("ID"), dr("Adi"), 1, 1)
            End If
        Next
    End Sub

    Private Sub TreeViewGuncelleSubeler(ByRef tv As TreeView)
        dsMerkezler = Sorgula("select * from merkezlersubeler where merkezmi = 'true' order by kademe, ID")
        dsMerkezler.PrimaryKey = {dsMerkezler.Columns("ID")}
        dsSubeler = Sorgula("select * from merkezlersubeler where merkezmi = 'false' order by kademe, ID")
        dsSubeler.PrimaryKey = {dsSubeler.Columns("ID")}

        tv.Nodes.Clear()
        tv.ImageList = imagelist1

        For Each dr In dsMerkezler.Rows
            ' Debug.Print(dr("kademe") & " - " & dr("Adi") & " - " & dr("ID"))
            If dr("kademe") = 0 Then
                tv.Nodes.Add(dr("ID"), dr("Adi"), 0, 0)

            Else
                Dim ust = tv.Nodes.Find(dr("ustMerkez"), True)
                ust.First.Nodes.Add(dr("ID"), dr("Adi"), 1, 1)
            End If
        Next

        For Each dr In dsSubeler.Rows
            ' Debug.Print(dr("kademe") & " - " & dr("Adi") & " - " & dr("ID"))
            Try
                Dim ustMerkezID As Integer = dr("ustMerkez")
                Dim ust = tv.Nodes.Find(ustMerkezID, True)
                ust.First.Nodes.Add(dr("ID"), dr("Adi"), 2, 2)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            
        Next
    End Sub


    ' TreeView kullanımı için basit örnekler
    'Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click        
    '    TreeView1.Nodes.Add("4", "aaa")
    '    TreeView1.Nodes.Find("4", True).First.Nodes.Add("bbbb")
    'End Sub

    'Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    '    Dim secilenID = TreeView1.SelectedNode.Name
    '    Dim secilenKademe = dsMerkezler.Rows.Find(TreeView1.SelectedNode.Name)("kademe")
    '    MsgBox("secilenID:  " & secilenID & " secilenKademe: " & secilenKademe)
    'End Sub

    'Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '    Dim secilenID = TreeView1.SelectedNode.Name
    '    Dim secilenKademe = dsMerkezler.Rows.Find(TreeView1.SelectedNode.Name)("kademe")
    '    MsgBox("secilenID:  " & secilenID & " secilenKademe: " & secilenKademe)
    'End Sub

    Private Sub tbSubeEkle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tbSubeEkle.Click
        Dim secilenID As Integer

        If tbSubeAdi.Text.Length < 1 Then
            MsgBox("Şube adı boş olamaz", MsgBoxStyle.Exclamation, "Hata")
            Return
        End If

        If tbSubeAdi.Text.Length < 3 Then
            MsgBox("Şube adı bu kadar kısa olamaz", MsgBoxStyle.Exclamation)
            Return
        End If

        If tbKullaniciAdi.Text.Length < 3 Then
            MsgBox("Kullanıcı  Adı En Az 3 Karakter Olmalıdır!", MsgBoxStyle.Exclamation)
            Return
        End If
        If tbSifre.Text.Length < 3 Then
            MsgBox("Şifre En Az 3 Karakter Olmalıdır!", MsgBoxStyle.Exclamation)
            Return
        End If


        If Not IsNumeric(tbMesafe.Text) Then
            MsgBox("Mesafe alanına numerik bir değer girmelisiniz", MsgBoxStyle.Exclamation)
            Return
        End If

        Try
            secilenID = tvSubeler.SelectedNode.Name
        Catch ex As Exception
            MsgBox("Merkez Seçmediniz", MsgBoxStyle.Exclamation, "Hata")
            Return
        End Try

        If tvSubeler.Nodes.Find(secilenID, True).First().ImageIndex = 2 Then
            MsgBox("Şubeler yalnızca merkezlere eklenebilir.", MsgBoxStyle.Exclamation, "Hata")
            Return
        End If

        Dim secilenKademe = dsMerkezler.Rows.Find(tvSubeler.SelectedNode.Name)("kademe")
        Debug.Print("secilenID:  " & secilenID & " secilenKademe: " & secilenKademe)

        Sorgula("insert into merkezlersubeler (Adi, ustMerkez, kademe,merkezmi,ustMerkezMesafe,kullaniciadi,sifre) values ('" &
                temizle(tbSubeAdi.Text) &
                "'," &
                secilenID &
                "," &
                secilenKademe + 1 &
                ", 'false', " &
                tbMesafe.Text & ",'" &
                temizle(tbKullaniciAdi.Text) & "','" &
                temizle(tbSifre.Text) & "')")
        MsgBox("şubeyi ekledim galiba", MsgBoxStyle.Information, "Hata")

        TreeViewGuncelleSubeler(tvSubeler)

        Dim node As TreeNode = tvSubeler.Nodes.Find(secilenID, True).First()
        tvSubeler.SelectedNode = node
        tvSubeler.SelectedNode.Expand()

        tbSubeAdi.Text = ""
        tvSubeler.SelectedNode = Nothing
    End Sub




  

 


 

    Private Sub lbSubelerdekiAraclariGoster_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        SubelerdekiAraclar.Show()
    End Sub



    Dim subeA, subeB As Integer
    Dim subeBUstIDler, subeAUstIDler As List(Of Integer)

  

    Private Sub btnSubeSec_Click(sender As Object, e As EventArgs) Handles btnSubeSec.Click
        Dim subeEkrani = New SubeEkran
        subeEkrani.Show()
    End Sub

    Private Sub btnKargoRotaIslemleri_Click(sender As Object, e As EventArgs) Handles btnKargoRotaIslemleri.Click
        KargoRotaIslemleri.Show()

    End Sub

    Private Sub tvSubeler_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles tvSubeler.AfterSelect

    End Sub

    Private Sub TabPage1_Enter(sender As Object, e As EventArgs) Handles TabPage1.Enter
        Dim tumBolgeMerkezleri = Sorgula("select * from merkezlersubeler where ustmerkez = 0")
        flpMerkezler.Controls.Clear()

        For Each merkez In tumBolgeMerkezleri.Rows

            Dim label As New Label()
            Dim textbox As New TextBox()
            Dim font As New Font("Times New Roman", 16)
            Dim panel As New FlowLayoutPanel

            label.Text = merkez("Adi")
            label.Font = font
            label.Height = 24
            label.Width = 250
            label.Name = "l" & merkez("ID")

            textbox.Name = "t" & merkez("ID")
            textbox.Height = 24
            textbox.BorderStyle = BorderStyle.FixedSingle

            'panel.Width = 500
            panel.Height = 24
            panel.Width = 500
            panel.Dock = DockStyle.Top
            panel.Controls.Add(label)
            panel.Controls.Add(textbox)

            flpMerkezler.Controls.Add(panel)
            
        Next

    End Sub

    Private Sub Admin_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
        Login.Show()
    End Sub

    Private Sub btnSil_Click(sender As Object, e As EventArgs) Handles btnSil.Click
        MerkezSubeSil(tvSubeler)
    End Sub

    Private Sub MerkezSubeSil(ByVal tv As TreeView)
        If tv.SelectedNode.Nodes.Count > 0 Then
            MsgBox("Seçtiğiniz merkez alt şube içerdiğinden dolayı silinemiyor.", MsgBoxStyle.Exclamation)
            Return
        Else
            If MessageBox.Show(tv.SelectedNode.Text & " adlı şubeyi silmek istediğinizden emin misiniz ? Şubeye ait istatistiksel veriler silinmeyecek.", "Emin misiniz ?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                Dim silinecekID = tv.SelectedNode.Name
                Dim silSQL = "delete from merkezlersubeler where ID = " & silinecekID
                Sorgula(silSQL)

                TreeViewGuncelleMerkezler(tvMerkezler)
                TreeViewGuncelleSubeler(tvSubeler)

                MsgBox("Seçtiğiniz şube/merkez başarı ile silindi", MsgBoxStyle.Information)

            End If

        End If
    End Sub

    Private Sub btnMerkeziSil_Click(sender As Object, e As EventArgs) Handles btnMerkeziSil.Click
        MerkezSubeSil(tvMerkezler)
    End Sub


    Private Sub btnEkle_Click_1(sender As Object, e As EventArgs) Handles btnEkle.Click
        Dim secilenID As Integer
        Try
            secilenID = tvMerkezler.SelectedNode.Name
        Catch ex As Exception
            MsgBox("Üst Merkez Seçmediniz", MsgBoxStyle.Exclamation, "Hata")
            Return
        End Try

        If tbAltMerkezAdi.Text.Length < 1 Then
            MsgBox("Merkez adı boş olamaz", MsgBoxStyle.Exclamation, "Hata")
            Return
        End If
        Dim secilenKademe = dsMerkezler.Rows.Find(tvMerkezler.SelectedNode.Name)("kademe")
        Debug.Print("secilenID:  " & secilenID & " secilenKademe: " & secilenKademe)

        Sorgula("insert into merkezlersubeler (Adi, ustMerkez, kademe, merkezmi) values ('" &
                temizle(tbAltMerkezAdi.Text) &
                "'," &
                secilenID &
                "," &
                secilenKademe + 1 &
                ", 'true')")
        MsgBox("ekledim galiba", MsgBoxStyle.Information, "Hata")

        TreeViewGuncelleMerkezler(tvMerkezler)
        TreeViewGuncelleSubeler(tvSubeler)

        Dim node As TreeNode = tvMerkezler.Nodes.Find(secilenID, True).First()
        tvMerkezler.SelectedNode = node
        tvMerkezler.SelectedNode.Expand()

        tbAltMerkezAdi.Text = ""
        tbAnaMerkezAdi.Text = ""
        tvMerkezler.SelectedNode = Nothing
    End Sub



    Private Sub TabPage6_Enter(sender As Object, e As EventArgs) Handles TabPage6.Enter
        Dim m As New Musterilistesi
        m.Show()
        TabControl1.SelectedTab = TabPage3
        m.Focus()
    End Sub
End Class